// 用户相关的状态管理
import { createSlice } from '@reduxjs/toolkit';
//导入统一中转工具模块函数
import { request } from '@utils'


const userStore = createSlice({
    name: 'user',//状态的名称，在全局state中可以通过user来获取到该状态
    initialState: {//初始状态
        token: '',//初始值

    },
    //同步修改方法
    reducers: {
        setToken(state, action) {
            state.token = action.payload
        }
    }
})
//解构出actionCreators
const { setToken } = userStore.actions

//获取reducer函数
const userReducer = userStore.reducer
//异步方法 完成登录获取token
const fetchLogin = (loginForm) => {
    return async (dispatch) => {
        try {
            //1.发送异步登录请求
            const res = await request.post('/authorizations', loginForm);
            if (res.data && res.data.data && res.data.data.token) {
                //2.提交同步方法(用dispatch)修改token（进行token的存入）
                dispatch(setToken(res.data.data.token));
            } else {
                console.error('未获取到有效的 token', res);
            }
        } catch (error) {
            console.error('登录请求失败', error);
        }
    }
}

export { fetchLogin, setToken }
export default userReducer